The SSA Representation Framework: Semantics, Analyses and GCC Implementation
نویسنده
چکیده
Interpretation. The semantics of a programming language can be more or less precise, depending on the degree of detail captured by the description of program execution. The framework of abstract interpretation [CC77, CC79] can be used to automatically define several semantics layers, corresponding to different levels of precision. Each semantics layer is represented by a partially ordered set, or domain. The relation between two semantics layers is defined using an approximation translation, which maps elements of the concrete domain to elements of the abstract domain. In order to guarantee the conservation of concrete semantics properties, the approximation and concretization functions have to satisfy the following properties, for some given elements from the concrete domain c1, c2 ∈ Σ1, and for some elements of the abstract domain a1, a2 ∈ Σ2: • α monotone: c1 ⊆ c2 ⇒ (α(c1) ⊆ α(c2)), • γ monotone: a1 ⊆ a2 ⇒ (γ(a1) ⊆ γ(a2)), • γ ◦ α extensive: c1 ⊆ γ(α(c1)), • α ◦ γ reductive: α(γ(a1)) ⊆ a1. A coarse approximation of a concrete domain leads to a less precise abstract domain on which the semantics can be practically computable. It is sometimes the case that the operations on the abstract domain are exact, i.e. computing on the abstract set produces exactly the same result, without loss of precision, as in the concrete set. In this case the order is trivially preserved, as the abstraction and concretization functions are bijections on some subsets of the abstract and concrete sets. 52 CHAPTER 3. FROM SSA TO ASSA IN PROLOG Theory of Abstract Domains. As we have seen, approximation functions map elements from a concrete semantics domain to an abstract domain. Once an abstract domain is formalized, it is possible to use the abstract interpretation framework for automatically defining the static analyzer corresponding to the translation of the concrete semantics domain to the abstract domain. The importance of abstract domains in the framework of abstract interpretation is illustrated by the number of abstract domains that have been formalized:
منابع مشابه
Tree SSA A New Optimization Infrastructure for GCC
Tree SSA is a new optimization framework based on the Static Single Assignment (SSA) form that operates on GCC’s tree representation. Tree SSA is designed to be both language and target independent and allow highlevel analyses and transformations that are difficult or impossible to implement with RTL. One of the main goals of the project is to produce an analysis and optimization infrastructure...
متن کاملDraft Version Denotational Semantics for SSA Conversion
We present the first formal specification of the SSA form, an intermediate code representation language used in most modern compilers such as GCC or Intel CC, and of its conversion process from imperative languages. More specifically, we provide (1) a denotational semantics of the SSA, the Static Single Assignment form, (2) a collecting denotational semantics for a Turing-complete imperative la...
متن کاملArchitecture for a Next-Generation GCC
This paper presents a design and implementation of a whole-program interprocedural optimizer built in the GCC framework. Through the introduction of a new language-independent intermediate representation, we extend the current GCC architecture to include a powerful mid-level optimizer and add link-time interprocedural analysis and optimization capabilities. This intermediate representation is a...
متن کاملDraft Version In and Out of SSA: A Denotational Specification
We present non-standard denotational specifications of the SSA form and of its conversion processes from and to imperative programming languages. Thus, we provide a strong mathematical foundation for this intermediate code representation language used in modern compilers such as GCC or Intel CC. More specifically, we provide (1) a new functional approach to SSA, the Static Single Assignment for...
متن کاملIn and Out of SSA: A Denotational Specification
We present non-standard denotational specifications of the SSAform and of its conversion processes from and to imperative pro-gramming languages. Thus, we provide a strong mathematicalfoundation for this intermediate code representation language usedin modern compilers such as GCC or Intel CC.More specifically, we provide (1) a new functional approachto SSA, the Static S...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2006